#include <stdlib.h>

#define INIT_SIZE 100
#define INCRMENT_SIZE 10
typedef char SElemType;
typedef struct{
    SElemType *base;
    SElemType *top;
    int size;
}SqStack;

void init(SqStack &S){
    S.base = (SElemType *) malloc(INIT_SIZE * sizeof(SElemType));
    if(!S.base){
        exit(0);
    }
    S.size = INIT_SIZE;
    S.top = S.base;
}

void push(SqStack &S, SElemType e){
    if(S.top - S.base == S.size){
        S.base = (SElemType *) realloc(S.base, (S.size + INCRMENT_SIZE) * sizeof(SElemType));
        if(!S.base){
            exit(0);
        }
        S.top = S.base + S.size;
        S.size += INCRMENT_SIZE;
    }
    *S.top++ = e;
}

void pop(SqStack &S, SElemType &e){
    if(S.base == S.top){//空栈
        return;
    }
    e = *--S.top;  
}

bool isEmpty(SqStack &S){
    return S.base == S.top;
}